<?php
include_once("Base.php");

class Persona extends class_Base{
	function __construct() {
		parent::__construct();
	}

	public function getAll($critery) {
		$condition = $this->getCondition($critery, false);
		$query = "select * from persona where estado = 1 ".$condition;
				
		return $this->getObjectArray($query);
	}
	
	public function getOwn($id, $critery){
		$condition = $this->getCondition($critery, false);
		$query = "select 
						p.*, 
						pl.id_plan,
						pl.id_seguro
				  from persona p
				  	   left join persona_plan pp on p.id_persona = pp.id_persona
				  	   			 left join plan pl on pp.id_plan = pl.id_plan 
				  where p.id_persona = ".$id.$condition;
		
		$object = $this->getObject($query); 
		return $object[0]; 
	}

	public function insert($persona){
		$query = "insert into persona (
								dni, 
								nro_control1,
								nro_control2,
								apellido, 
								nombre, 
								fecha_nacimiento, 
								domicilio, 
								cp, 
								id_localidad, 
								cargo, 
								lugar_trabajo,
								cbu
							) values(
								".$persona->dni.",
								'".$persona->nro_control1."',
								'".$persona->nro_control2."',
								'".$persona->apellido."',
								'".$persona->nombre."',
								'".$persona->fecha_nacimiento."',
								'".$persona->domicilio."',
								'".$persona->cp."',
								'".$persona->id_localidad."',
								'".$persona->cargo."',
								'".$persona->lugar_trabajo."',
								'".$persona->cbu."'
							)";
		return $this->execute($query);
	}

	public function edit($persona){
		$query = "update persona set
						dni=".$persona->dni.",
						nro_control1='".$persona->nro_control1."',
						nro_control2='".$persona->nro_control2."', 
						apellido='".$persona->apellido."', 
						nombre='".$persona->nombre."', 
						fecha_nacimiento='".$persona->fecha_nacimiento."', 
						domicilio='".$persona->domicilio."', 
						cp='".$persona->cp."', 
						id_localidad='".$persona->id_localidad."', 
						cargo='".$persona->cargo."', 
						lugar_trabajo='".$persona->lugar_trabajo."',
						cbu='".$persona->cbu."' 
				  where id_persona = ".$persona->id_persona;
		return $this->execute($query);
	}
	
	public function delete($id){
		$query = "update persona set estado = 0 where id_persona = ".$id;
		if (!$this->execute($query)){
			throw new Exception("Eliminacion en Cascada: Error al eliminar una persona de la tabla 'persona'");
		}
		$query = "update beneficiario set estado = 0 where id_persona = ".$id;
		if (!$this->execute($query)){
			throw new Exception("Eliminacion en Cascada: Error al eliminar una persona de la tabla 'beneficiario'");
		}
		$query = "update persona_plan set estado = 0 where id_persona = ".$id;
		if (!$this->execute($query)){
			throw new Exception("Eliminacion en Cascada: Error al eliminar una persona de la tabla 'persona_plan'");
		}
		return true;
	}
	
	public function existsDni($dni){
		return $this->exitsValueField("persona", "dni", $dni);
		
	}
	
	public function existsNroControl($nroControl){
		return $this->exitsValueField("persona", "nro_control1", $nroControl);
	}
}
?>